package com.zenithmind.user.service.domain;

import com.zenithmind.user.pojo.domain.User;
import com.zenithmind.user.pojo.domain.UserRole;
import com.zenithmind.user.pojo.dto.RegisterDTO;
import com.zenithmind.user.pojo.dto.UserProfileUpdateDTO;
import com.zenithmind.user.pojo.vo.UserVO;
import com.zenithmind.common.result.Result;

import java.util.List;

/**
 * 用户管理服务接口
 * 遵循接口隔离原则：只包含用户管理相关功能
 * 遵循单一职责原则：专注于用户管理逻辑
 */
public interface UserManagementService {
    
    /**
     * 用户注册
     */
    Result<UserVO> register(RegisterDTO registerDTO);
    
    /**
     * 添加或更新用户
     */
    UserVO addOrUpdateUser(User user);
    
    /**
     * 更新用户档案
     */
    UserVO updateProfile(UserProfileUpdateDTO updateDTO);
    
    /**
     * 更新用户状态
     */
    UserVO updateStatus(User user);
    
    /**
     * 更新用户角色
     */
    UserVO updateRole(UserRole userRole);
    
    /**
     * 重置用户密码
     */
    void resetPassword(User user);
    
    /**
     * 删除用户
     */
    void deleteUser(String userId);
    
    /**
     * 批量删除用户
     */
    void deleteBatch(List<String> ids);
    
    /**
     * 启用用户
     */
    void enableUser(String userId);
    
    /**
     * 禁用用户
     */
    void disableUser(String userId);
    
    /**
     * 更新用户存储使用量
     */
    boolean updateStorageUsed(String userId, long fileSize);
    
    /**
     * 分配角色给用户
     */
    void assignRole(String userId, String roleId);
    
    /**
     * 移除用户角色
     */
    void removeRole(String userId, String roleId);
}
